#ifndef _BT_FONT_H_
#define _BT_FONT_H_


#include <ft2build.h>
#include FT_FREETYPE_H
#include FT_GLYPH_H
#include <GL/gl.h>
#include <string>
#include "filesystem.h"
#include "tools.h"
#include "vector2f.h"

namespace bt
{
	class Font
	{
	public:
		Font();
		
		Font(const char* filename, int fontSize);
		
		~Font();
		
		// Accessors
		float getFontSize();
		float getLineHeight();
		
		// Mutators
		void setFont(const char* filename, int fontSize);
		
		void setLineHeight(float height);
		
		// Actions
		void drawString(const char* output);
		void drawString(const char* output, float x, float y);
		
		void drawClippedString(const char* output, float w, float h);
		void drawClippedString(const char* output, float x, float y, float w, float h);
		
		void drawWrappedString(const char* output, float w, float h);
		void drawWrappedString(const char* output, float x, float y, float w, float h);
		
	private:
		void genList(FT_Face& face, char ch);
			
		GLuint* textures;
		GLuint lists;
		
		float fontSize;
		float lineHeight;
	};
}

#endif /* _BT_FONT_H_ */
